/*
 * @Author: Li Zengkun
 * @Date: 2022-09-26 16:59:01
 * @LastEditors: Li Zengkun
 * @LastEditTime: 2022-09-29 13:53:54
 * @Description: 
 */
import axios from "axios"
import { ElMessage } from "element-plus";
// 路由设置
import router from "@/router"

// 全局 axios 默认值
axios.defaults.baseURL = "http://localhost:3003";

// withCredentials是XMLHttpRequest的一个属性，
// 表示跨域请求是否提供凭据信息(cookie、HTTP认证及客户端SSL证明等)
axios.defaults.withCredentials = true;

/**
 * @description: 请求拦截器
 * @return {*}
 * @param {*} function
 */
axios.interceptors.request.use(function(config) {
    // 登陆注册可以不携带token
    if (config.url.includes("/login") || config.url.includes("/register")) {
        return config
    }
    // 图片上传
    if (config.url.includes("/upload")) {
        config.headers['Content-Type'] = "multipart/form-data"
    }
    // 获取 token，判断是否已经登录
    let { token } = sessionStorage
    // 拥有 token，再 header 头添加 token
    if (token) {
        config.headers.Authorization = `Bearer ${token}`
    }
    return config
}, function(error) {
    return Promise.reject(error)
})

// 响应拦截器
axios.interceptors.response.use((res) => {
    if (res.status === 200) {
        return res.data
    }


}, ({ response, messgae }, _, resp) => {
    let { status, msg, data } = response
    if (status === 401) {
        ElMessage.error(`${status}: 登陆过期，请重新登陆`)
        return router.push({ name: "Login" })
    }
    ElMessage.error(`${status}: ${msg}`)
})